package xyz.pro5books.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import xyz.pro5books.mapper.MsgMapper;
import xyz.pro5books.mapper.UserMapper;
import xyz.pro5books.pojo.Msg;
import xyz.pro5books.vo.MsgVO;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class MsgServiceImpl implements MsgService{
    @Autowired
    private MsgMapper msgMapper;

    @Autowired
    private UserMapper userMapper;

    @Override
    public void saveMsg(Msg msg) {
        msg.setTime(new Date());
        System.out.println(msg);
        msgMapper.insert(msg);

    }

    @Override
    public List<MsgVO> getMsgList(Integer userId) {
        List<MsgVO> msgVOList = new ArrayList<>();
        QueryWrapper<Msg> queryWrapper = new QueryWrapper();
        queryWrapper.eq("rece",userId).orderByAsc("time");
        List<Msg> msgList = msgMapper.selectList(queryWrapper);
        for (Msg msg : msgList){
            String username = userMapper.selectById(msg.getSend()).getUsername();
            msgVOList.add(new MsgVO().setId(msg.getId())
                                    .setSendName(username)
                                    .setMessage(msg.getMessage())
                                    .setTime(msg.getTime())
                                    .setReaded(msg.getReaded()));
        }
        return msgVOList;
    }

    @Override
    public void deleteMsg(Integer msgId) {
        msgMapper.deleteById(msgId);
    }

    @Override
    public void changeToReaded(Integer msgId) {
        msgMapper.updateById(new Msg().setId(msgId).setReaded(true));
    }

    @Override
    public Integer getMessageNum(Integer userId) {
        QueryWrapper<Msg> queryWrapper = new QueryWrapper();
        queryWrapper.eq("rece",userId)
                .eq("readed",0);
        return msgMapper.selectCount(queryWrapper);
    }
}
